gRPC 使用

gRPC 是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计。目前提供 C、Java 和 Go 语言版本,分别是:grpc, grpc-java, grpc-go. 其中 C 版本支持 C, C++, Node.js, Python, Ruby, Objective-C, PHP 和 C# 支持.

gRPC 基于 HTTP/2 标准设计,带来诸如双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。

grpc_concept_diagram_00

protocol buffers

gRPC 默认使用 protocol buffers,这是 Google 开源的一套成熟的结构数据序列化机制(当然也可以使用其他数据格式如 JSON)。正如你将在下方例子里所看到的,你用 proto files 创建 gRPC 服务,用 protocol buffers 消息类型来定义方法参数和返回类型。

protobuffer

Install goprotobuf

   # 安装protobuf库文件
   go get -u -v github.com/golang/protobuf/proto

   # 安装插件 goprotobuf
   go get -u -v github.com/golang/protobuf/protoc-gen-go

   # 安装 对应系统版本的 protoc 工具https://github.com/google/protobuf/releases
   # windows
   wget https://github.com/google/protobuf/releases/download/v3.6.0/protoc-3.6.0-win32.zip
    # 生成go文件
   protoc --go_out=. *.proto

Install gogoprotobuf [性能更快]

gogoprotobuf有两个插件可以使用

  • protoc-gen-gogo:和protoc-gen-go生成的文件差不多,性能也几乎一样(稍微快一点点)
  • protoc-gen-gofast:生成的文件更复杂,性能也更高(快5-7倍)
        # 安装 gogoprotobuf 库文件
        go get -u -v github.com/gogo/protobuf/proto
        go get -u -v github.com/gogo/protobuf/gogoproto

        # 安装插件 gogoprotobuf
        # gogo
        go get -u -v github.com/gogo/protobuf/protoc-gen-gogo
        # gofast
        go get -u -v github.com/gogo/protobuf/protoc-gen-gofast

        # 安装 对应系统版本的 protoc 工具 https://github.com/google/protobuf/releases
        # windows
        wget https://github.com/google/protobuf/releases/download/v3.6.0/protoc-3.6.0-win32.zip
        # 生成go文件
        # gogo
        protoc --gogo_out=. *.proto
        # gofast
        protoc --gofast_out=. *.proto

Install gRPC

        # 安装gRPC 库
        go get -u google.golang.org/grpc

        # 基于 protobuf 生成 gRPC 代码
        # 官方生成
        protoc --go_out=plugins=grpc:. *.proto
        # gogo 生成
        protoc --gogo_out=plugins=grpc:. *.proto
        # gofast 生成
        protoc --gofast_out=plugins=grpc:. *.proto
# rpc  protobuf 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×